<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    
    <title>numpy.lib.Arrayterator &mdash; NumPy v1.18 Manual</title>
    
    <link rel="stylesheet" type="text/css" href="../../_static/css/spc-bootstrap.css">
    <link rel="stylesheet" type="text/css" href="../../_static/css/spc-extend.css">
    <link rel="stylesheet" href="../../_static/scipy.css" type="text/css" >
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" >
    <link rel="stylesheet" href="../../_static/graphviz.css" type="text/css" >
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../../',
        VERSION:     '1.18.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  false
      };
    </script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="../../_static/language_data.js"></script>
    <script type="text/javascript" src="../../_static/js/copybutton.js"></script>
    <link rel="author" title="About these documents" href="../../about.html" >
    <link rel="index" title="Index" href="../../genindex.html" >
    <link rel="search" title="Search" href="../../search.html" >
    <link rel="top" title="NumPy v1.18 Manual" href="../../index.html" >
    <link rel="up" title="Indexing routines" href="../routines.indexing.html" >
    <link rel="next" title="Input and output" href="../routines.io.html" >
    <link rel="prev" title="numpy.flatiter.copy" href="numpy.flatiter.copy.html" > 
  </head>
  <body>
<div class="container">
  <div class="top-scipy-org-logo-header" style="background-color: #a2bae8;">
    <a href="../../index.html">
      <img border=0 alt="NumPy" src="../../_static/numpy_logo.png"></a>
    </div>
  </div>
</div>


    <div class="container">
      <div class="main">
        
	<div class="row-fluid">
	  <div class="span12">
	    <div class="spc-navbar">
              
    <ul class="nav nav-pills pull-left">
        <li class="active"><a href="https://numpy.org/">NumPy.org</a></li>
        <li class="active"><a href="https://numpy.org/doc">Docs</a></li>
        
        <li class="active"><a href="../../index.html">NumPy v1.18 Manual</a></li>
        

          <li class="active"><a href="../index.html" >NumPy Reference</a></li>
          <li class="active"><a href="../routines.html" >Routines</a></li>
          <li class="active"><a href="../routines.indexing.html" accesskey="U">Indexing routines</a></li> 
    </ul>
              
              
    <ul class="nav nav-pills pull-right">
      <li class="active">
        <a href="../../genindex.html" title="General Index"
           accesskey="I">index</a>
      </li>
      <li class="active">
        <a href="../routines.io.html" title="Input and output"
           accesskey="N">next</a>
      </li>
      <li class="active">
        <a href="numpy.flatiter.copy.html" title="numpy.flatiter.copy"
           accesskey="P">previous</a>
      </li>
    </ul>
              
	    </div>
	  </div>
	</div>
        

	<div class="row-fluid">
      <div class="spc-rightsidebar span3">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="numpy.flatiter.copy.html"
                        title="previous chapter">numpy.flatiter.copy</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="../routines.io.html"
                        title="next chapter">Input and output</a></p>
<div id="searchbox" style="display: none" role="search">
  <h4>Quick search</h4>
    <div>
    <form class="search" action="../../search.html" method="get">
      <input type="text" style="width: inherit;" name="q" />
      <input type="submit" value="search" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
          <div class="span9">
            
        <div class="bodywrapper">
          <div class="body" id="spc-section-body">
            
  <div class="section" id="numpy-lib-arrayterator">
<h1>numpy.lib.Arrayterator<a class="headerlink" href="#numpy-lib-arrayterator" title="Permalink to this headline">¶</a></h1>
<dl class="class">
<dt id="numpy.lib.Arrayterator">
<em class="property">class </em><code class="sig-prename descclassname">numpy.lib.</code><code class="sig-name descname">Arrayterator</code><span class="sig-paren">(</span><em class="sig-param">var</em>, <em class="sig-param">buf_size=None</em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/numpy/numpy/blob/v1.18.1/numpy/lib/arrayterator.py#L20-L224"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#numpy.lib.Arrayterator" title="Permalink to this definition">¶</a></dt>
<dd><p>Buffered iterator for big arrays.</p>
<p><a class="reference internal" href="#numpy.lib.Arrayterator" title="numpy.lib.Arrayterator"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Arrayterator</span></code></a> creates a buffered iterator for reading big arrays in small
contiguous blocks. The class is useful for objects stored in the
file system. It allows iteration over the object <em>without</em> reading
everything in memory; instead, small blocks are read and iterated over.</p>
<p><a class="reference internal" href="#numpy.lib.Arrayterator" title="numpy.lib.Arrayterator"><code class="xref py py-obj docutils literal notranslate"><span class="pre">Arrayterator</span></code></a> can be used with any object that supports multidimensional
slices. This includes NumPy arrays, but also variables from
Scientific.IO.NetCDF or pynetcdf for example.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><dl class="simple">
<dt><strong>var</strong><span class="classifier">array_like</span></dt><dd><p>The object to iterate over.</p>
</dd>
<dt><strong>buf_size</strong><span class="classifier">int, optional</span></dt><dd><p>The buffer size. If <em class="xref py py-obj">buf_size</em> is supplied, the maximum amount of
data that will be read into memory is <em class="xref py py-obj">buf_size</em> elements.
Default is None, which will read as many element as possible
into memory.</p>
</dd>
</dl>
</dd>
</dl>
<div class="admonition seealso">
<p class="admonition-title">See also</p>
<dl class="simple">
<dt><code class="xref py py-obj docutils literal notranslate"><span class="pre">ndenumerate</span></code></dt><dd><p>Multidimensional array iterator.</p>
</dd>
<dt><code class="xref py py-obj docutils literal notranslate"><span class="pre">flatiter</span></code></dt><dd><p>Flat array iterator.</p>
</dd>
<dt><code class="xref py py-obj docutils literal notranslate"><span class="pre">memmap</span></code></dt><dd><p>Create a memory-map to an array stored in a binary file on disk.</p>
</dd>
</dl>
</div>
<p class="rubric">Notes</p>
<p>The algorithm works by first finding a “running dimension”, along which
the blocks will be extracted. Given an array of dimensions
<code class="docutils literal notranslate"><span class="pre">(d1,</span> <span class="pre">d2,</span> <span class="pre">...,</span> <span class="pre">dn)</span></code>, e.g. if <em class="xref py py-obj">buf_size</em> is smaller than <code class="docutils literal notranslate"><span class="pre">d1</span></code>, the
first dimension will be used. If, on the other hand,
<code class="docutils literal notranslate"><span class="pre">d1</span> <span class="pre">&lt;</span> <span class="pre">buf_size</span> <span class="pre">&lt;</span> <span class="pre">d1*d2</span></code> the second dimension will be used, and so on.
Blocks are extracted along this dimension, and when the last block is
returned the process continues from the next dimension, until all
elements have been read.</p>
<p class="rubric">Examples</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">3</span> <span class="o">*</span> <span class="mi">4</span> <span class="o">*</span> <span class="mi">5</span> <span class="o">*</span> <span class="mi">6</span><span class="p">)</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">a_itor</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">lib</span><span class="o">.</span><span class="n">Arrayterator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">a_itor</span><span class="o">.</span><span class="n">shape</span>
<span class="go">(3, 4, 5, 6)</span>
</pre></div>
</div>
<p>Now we can iterate over <code class="docutils literal notranslate"><span class="pre">a_itor</span></code>, and it will return arrays of size
two. Since <em class="xref py py-obj">buf_size</em> was smaller than any dimension, the first
dimension will be iterated over first:</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">subarr</span> <span class="ow">in</span> <span class="n">a_itor</span><span class="p">:</span>
<span class="gp">... </span>    <span class="k">if</span> <span class="ow">not</span> <span class="n">subarr</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
<span class="gp">... </span>        <span class="nb">print</span><span class="p">(</span><span class="n">subarr</span><span class="p">,</span> <span class="n">subarr</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span> 
<span class="gp">&gt;&gt;&gt; </span><span class="c1"># [[[[0 1]]]] (1, 1, 1, 2)</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Attributes</dt>
<dd class="field-odd"><dl class="simple">
<dt><strong>var</strong></dt><dd></dd>
<dt><strong>buf_size</strong></dt><dd></dd>
<dt><strong>start</strong></dt><dd></dd>
<dt><strong>stop</strong></dt><dd></dd>
<dt><strong>step</strong></dt><dd></dd>
<dt><a class="reference internal" href="numpy.lib.Arrayterator.shape.html#numpy.lib.Arrayterator.shape" title="numpy.lib.Arrayterator.shape"><code class="xref py py-obj docutils literal notranslate"><span class="pre">shape</span></code></a></dt><dd><p>The shape of the array to be iterated over.</p>
</dd>
<dt><a class="reference internal" href="numpy.lib.Arrayterator.flat.html#numpy.lib.Arrayterator.flat" title="numpy.lib.Arrayterator.flat"><code class="xref py py-obj docutils literal notranslate"><span class="pre">flat</span></code></a></dt><dd><p>A 1-D flat iterator for Arrayterator objects.</p>
</dd>
</dl>
</dd>
</dl>
</dd></dl>

</div>


          </div>
        </div>
          </div>
        </div>
      </div>
    </div>

    <div class="container container-navbar-bottom">
      <div class="spc-navbar">
        
      </div>
    </div>
    <div class="container">
    <div class="footer">
    <div class="row-fluid">
    <ul class="inline pull-left">
      <li>
        &copy; Copyright 2008-2019, The SciPy community.
      </li>
      <li>
      Last updated on Feb 20, 2020.
      </li>
      <li>
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.4.2.
      </li>
    </ul>
    </div>
    </div>
    </div>
  </body>
</html>